"""
数据处理计算
==============================================================================================
flatMap算子

flatMap算子，对 RDD 执行 map 操作，然后进行 解除嵌套 操作

- 计算逻辑和map一样
- 可以比map多出，解除一层嵌套的功能

==============================================================================================

"""

# 演示RDD的flatMap成员方法的使用
from pyspark import SparkConf, SparkContext
# windows 中 spark 找不到对于的 python 解释器会报错
import os

os.environ["PYSPARK_PYTHON"] = "D:/python3.11/python.exe"

conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
sc = SparkContext(conf=conf)

# 准备一个RDD
rdd = sc.parallelize(
    ["pikaqiu houboshi 666", "pikaqiu jialebi hashiqi", "python iloveyou"]
)

# 需求：将RDD数据里一个个单词提取出来
rdd2 = rdd.map(lambda x: x.split(" "))
# [['pikaqiu', 'houboshi', '666'], ['pikaqiu', 'jialebi', 'hashiqi'], ['python', 'iloveyou']]
print("rdd2.collect()内容为：", rdd2.collect())
rdd3 = rdd.flatMap(lambda x: x.split(" "))
# ['pikaqiu', 'houboshi', '666', 'pikaqiu', 'jialebi', 'hashiqi', 'python', 'iloveyou']
print("rdd3.collect()内容为：", rdd3.collect())
